package com.adee.java;

/**
 * 找到大于等于n的最小的2的次幂
 */
public class Test059_find2Pow {
    public static void main(String[] args) {
        int n = 1073;
        int t = n;
        // 下面这5行移位的代码是将最高位1及以下的为全部置为1
        t |= t >>> 1; // 将最高位1的前2位置为1
        t |= t >>> 2; // 将最高位1的前4位置为1
        t |= t >>> 4; // 将最高位1的前8位置为1
        t |= t >>> 8; // 将最高位1的前16位置为1
        t |= t >>> 16; // 将最高位1的前32位置为1
        t++; // 此时，最高位1及以下位都为1了，加一操作就会进位，得到2的次幂
        System.out.println(String.format("大于等于%d的最小的2的次幂是：%d（%s）", n, t, Integer.toBinaryString(t)));
    }
}
